/*
 * @Author: your name
 * @Date: 2020-07-25 10:05:23
 * @LastEditTime: 2020-07-25 11:31:09
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \hmall-shop\gulpfile.js
 */
const gulp = require('gulp');

const webpack = require('webpack')
const path = require('path');
const del = require('del');
const ftp = require('gulp-sftp');

// 是webpack配置文件
const webpackConfig = require('./vue.config');

// 是上传地址配置，可以在.gitignore中忽略此文件上传，为了安全本地拥有就可以了
const config = require('./uploadConfig');

// 判断是开发环境还是生产环境
const isEnv = process.env.NODE_ENV == 'production';

/**
 * 清除生产目录文件
 */
gulp.task('clean', ['upload'], function (callback) {
  console.log('## 已经成功部署到服务器上')
  console.log('## 清除原来编译的代码')
  del(['.' + config.publicPath], callback)
});

/**
 * 编译代码
 */
gulp.task('build', function (callback) {
  console.log('## 代码编译开始')
  webpack(webpackConfig, function (err, state) {
    console.log('## 代码编译完成')
    callback(err)
  })
});

/**
 * 编译代码，自动部署到服务器
 */
gulp.task('upload', function (callback) {
  console.log('## 正在部署到服务器上')
  var dev = isEnv ? config.devProd : config.devTest
  gulp.src('.' + config.publicPath + '**')
    .pipe(ftp(Object.assign(dev, { callback })))
});

/**
 * 上传到测试服务器上
 */
gulp.task('devTest', ['build', 'upload', 'clean'])

/**
 * 上传到生产服务器上
 */
gulp.task('devProd', ['build', 'upload', 'clean'])